package com.fuze.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @author sepc_
 * @date 4/12/2021 09:30
 * 用户注册的表单数据
 */
@ApiModel(value = "UserVO", description = "普通用户的视图对象")
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserVO implements Serializable {
    private static final long serialVersionUID = -3410501841179724696L;

    /**
     * 用户名
     */
    @NotBlank(message = "用户名不能为空")
    @ApiModelProperty(name = "username", value = "用户名")
    @JsonProperty(value = "username")
    private String username;

    /**
     * 用户密码
     */
    @JsonProperty(value = "password")
    @NotBlank(message = "用户密码不能为空")
    @ApiModelProperty(name = "password", value = "用户密码")
    private String password;


    /**
     * 手机号
     */
    @JsonProperty(value = "telephone")
    @NotBlank(message = "手机号码不能为空")
    @ApiModelProperty(name = "telephone", value = "手机号码")
    private String telephone;

    /**
     * 购电公司名+户号
     */
    @JsonProperty(value = "marketMembersName")
    @NotBlank(message = "市场成员名称不能为空")
    @ApiModelProperty(name = "marketMembersName", value = "市场成员名称（购电公司名称+户号）")
    private String marketMembersName;

    /**
     * 简称
     */
    @ApiModelProperty(name = "abbreviation", value = "简称")
    private String abbreviation;

    /**
     * 市场成员类型
     */
    @ApiModelProperty(name = "markerMembersType", value = "市场成员类型")
    private String markerMembersType;

    /**
     * 业务场景
     */
    @ApiModelProperty(name = "businessScenarios", value = "业务场景")
    private String businessScenarios;

    /**
     * 用户交易类型
     */
    @ApiModelProperty(name = "userTransactionType", value = "用户交易类型")
    private String userTransactionType;

    /**
     * 用户交易线路
     */
    @ApiModelProperty(name = "transactionLine", value = "用户交易线路")
    private String transactionLine;

    /**
     * 用电单元
     */
    @ApiModelProperty(name = "powerConsumptionUnit", value = "用电单元")
    private String powerConsumptionUnit;

    /**
     * 地理区域
     */
    @ApiModelProperty(name = "location", value = "地理区域")
    private String location;

    /**
     * 行业分类
     */
    @ApiModelProperty(name = "industryClassification", value = "行业分类")
    private String industryClassification;

    /**
     * 园区用户
     */
    @ApiModelProperty(name = "parkUsers", value = "园区用户")
    private String parkUsers;

    /**
     * 最高供电电压
     */
    @ApiModelProperty(name = "maximumSupplyVoltage", value = "最高供电电压")
    private String maximumSupplyVoltage;

    /**
     * 合同容量
     */
    @ApiModelProperty(name = "contractCapacity", value = "合同容量")
    private String contractCapacity;

    /**
     * 是否核定了直接交易输配电价
     */
    @ApiModelProperty(name = "directTransactionElectricPrice", value = "是否核定了直接交易输配电价")
    private String directTransactionElectricPrice;

    /**
     * 入市时间
     */
    @ApiModelProperty(name = "marketEntryTime", value = "入市时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date marketEntryTime;

    /**
     * 退市时间
     */
    @ApiModelProperty(name = "delistingTime", value = "退市时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date delistingTime;

    /**
     * （合同）更新时间
     */
    @ApiModelProperty(name = "updateTime", value = "（合同）更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 附件
     */
    @ApiModelProperty(name = "enclosure", value = "附件")
    private String enclosure;

    /**
     * 曾用名
     */
    @ApiModelProperty(name = "nameUsedBefore", value = "曾用名")
    private String nameUsedBefore;

    /**
     * 注册编码
     */
    @ApiModelProperty(name = "registrationCode", value = "注册编码")
    private String registrationCode;

    /**
     * 状态
     */
    @ApiModelProperty(name = "type", value = "状态")
    private String type;

    /**
     * 企业法人名称
     */
    @ApiModelProperty(name = "enterpriseLegalPersonName", value = "企业法人名称")
    private String enterpriseLegalPersonName;

    /**
     * 法人代表姓名
     */
    @ApiModelProperty(name = "legalRepresentativeName", value = "法人代表姓名")
    private String legalRepresentativeName;

    /**
     * 企业法人营业执照注册号
     */
    @ApiModelProperty(name = "businessLicenseNumber", value = "企业法人营业执照注册号")
    private String businessLicenseNumber;

    /**
     * 企业注册地址
     */
    @ApiModelProperty(name = "businessRegistrationAddress", value = "企业注册地址")
    private String businessRegistrationAddress;

    /**
     * 售电层级
     */
    @ApiModelProperty(name = "salesLevel", value = "售电层级")
    private String salesLevel;

    /**
     * 售电结算单位
     */
    @ApiModelProperty(name = "electricitySalesSettlementUnit", value = "售电结算单位")
    private String electricitySalesSettlementUnit;

    /**
     * 组织结构代码
     */
    @ApiModelProperty(name = "organizationCode", value = "组织结构代码")
    private String organizationCode;

    /**
     * 税务登记证号
     */
    @ApiModelProperty(name = "taxRegistrationNumber", value = "税务登记证号")
    private String taxRegistrationNumber;

    /**
     * 开户银行
     */
    @ApiModelProperty(name = "bankOfDeposit", value = "开户银行")
    private String bankOfDeposit;

    /**
     * 开户名称
     */
    @ApiModelProperty(name = "accountName", value = "开户名称")
    private String accountName;

    /**
     * 开户账号
     */
    @ApiModelProperty(name = "accountNumber", value = "开户账号")
    private String accountNumber;

    /**
     * 营销用户编号
     */
    @ApiModelProperty(name = "marketingUserNumber", value = "营销用户编号")
    private String marketingUserNumber;

    /**
     * 用电类别
     */
    @ApiModelProperty(name = "electricityConsumptionType", value = "用电类别")
    private String electricityConsumptionType;

    /**
     * 用电地址
     */
    @ApiModelProperty(name = "electricityConsumptionAddress", value = "用电地址")
    private String electricityConsumptionAddress;

    /**
     * 联系人姓名
     */
    @ApiModelProperty(name = "contactName", value = "联系人姓名")
    private String contactName;

    /**
     * 联系人职务
     */
    @ApiModelProperty(name = "contactTitle", value = "联系人职务")
    private String contactTitle;

    /**
     * 传真
     */
    @ApiModelProperty(name = "fax", value = "传真")
    private String fax;

    /**
     * 电子邮件
     */
    @ApiModelProperty(name = "email", value = "电子邮件")
    private String email;

    /**
     * 网址
     */
    @ApiModelProperty(name = "website", value = "网址")
    private String website;

    /**
     * 通信地址
     */
    @ApiModelProperty(name = "mailingAddress", value = "通信地址")
    private String mailingAddress;

    /**
     * 邮政编码
     */
    @ApiModelProperty(name = "postalCode", value = "邮政编码")
    private String postalCode;

    /**
     * 用户是否绑定
     * 1-绑定，2-未绑定
     */
    @NotNull
    @ApiModelProperty(name = "bindType", value = "用户是否绑定")
    private String bindType;

}
